package com.zpark.se.collection.set;

import java.util.SortedSet;
import java.util.TreeSet;

/**
 * TreeSet集合：
 *      TreeSet 类同时实现了 Set 接口和 SortedSet 接口。SortedSet 接口是 Set 接口的子接口，
 * 可以实现对集合进行自然排序，因此使用 TreeSet 类实现的 Set 接口默认情况下是自然排序的，这里的自
 * 然排序指的是升序排序。
 *  	TreeSet 只能对实现了 Comparable 接口的类对象进行排序，因为 Comparable 接口中有一个
 * 	compareTo(Object o) 方法用于比较两个对象的大小。例如 a.compareTo(b)，如果 a 和 b 相等，
 * 	则该方法返回 0；如果 a 大于 b，则该方法返回大于 0 的值；如果 a 小于 b，则该方法返回小于 0
 * 	的值。
 */
public class Demo03 {
    public static void main(String[] args) {
        // 创建TreeSet集合
        TreeSet<Integer> sets = new TreeSet<>();
        // 添加元素
        sets.add(10);
        sets.add(20);
        sets.add(30);
        sets.add(4);
        sets.add(0);
        sets.add(20);
        sets.add(30);
        sets.add(4);
        sets.add(0);
        System.out.println(sets);

        // treeSet类扩展方法
        /*
         first()：返回此集合的第一个元素。
         */
        Integer first = sets.first();
        System.out.println(first);

        /*
         last()：返回此集合的最后一个元素。
         */
        Integer last = sets.last();
        System.out.println(last);

        /*
         pollFirst()：返回并删除此集合的第一个元素。
         */
        Integer first1 = sets.pollFirst();
        System.out.println(first1);
        System.out.println(sets);

        /*
         pollLast()：返回并删除此集合的最后一个元素。
         */
        Integer last1 = sets.pollLast();

        /*
         subSet(E fromElement, E toElement)：返回此集合中从 fromElement
         到 toElement 的所有元素的子集。
         */
        SortedSet<Integer> integers = sets.subSet(4, 20);
        System.out.println(integers);

        /*
         headSet(E toElement)：返回此集合中从第一个元素到 toElement 的所有元素的子集。
         */
        SortedSet<Integer> integers1 = sets.headSet(20);
        System.out.println(integers1);

        /*
         tailSet(E fromElement)：返回此集合中从 fromElement 到最后一个元素的子集。
         */
        SortedSet<Integer> integers2 = sets.tailSet(20);
        System.out.println(integers2);
    }
}
